﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#
//编写一个程序，从用户输入中读取10个整数并存储在一个数组中。然后，计算并输出这些整数的平均值。
//int main()
//{
//	int arr[10] = { 0 };
//	int sum = 0;
//	for (int i = 0; i < 10; i++)
//	{
//		scanf("%d", &arr[i]);
//		sum += arr[i];
//	}
//	printf("%f\n", sum / 10.0);
//	return 0;
//}


//将数组A中的内容和数组B中的内容进行交换。（数组一样大）
//int main()
//{
//	int arr_a[] = { 1,2,3,4,5,6 };
//	int arr_b[] = { 7,8,9,10,11,12 };
//	int sz = sizeof(arr_a) / sizeof(arr_a[0]);
//	for (int i = 0; i < sz; i++)
//	{
//		int tmp = arr_a[i];
//		arr_a[i] = arr_b[i];
//		arr_b[i] = tmp;
//	}
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr_a[i]);
//	}
//	printf("\n");
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr_b[i]);
//	}
//	return 0;
//}


//打印1000年到2000年之间的闰年
//int main()
//{
//	for (int i = 1000; i <= 2000; i++)
//	{
//		if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0))
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}


//给定两个数，求这两个数的最大公约数
//
//例如：
//
//输入：20 40
//
//输出：20
// 
//辗转相除法
//int main()
//{
//	int n = 0;
//	int m = 0;
//	scanf("%d %d", &n, &m);
//	while (n%m)
//	{
//		int tmp = n % m;
//		n = m;
//		m = tmp;
//	}
//	printf("%d\n", m);
//	return 0;
//}


//写⼀个猜数字游戏
//游戏要求：
//1. 电脑自动生成1~100的随机数
//2. 玩家猜数字，猜数字的过程中，根据猜测数据的大小给出大了或小了的反馈，直到猜对，游戏结束

//void Menu()
//{
//	printf("*********************\n");
//	printf("*******1. 开始*******\n");
//	printf("*******0. 退出*******\n");
//	printf("*********************\n");
//}
//
//void Play_Game()
//{
//	int num = rand() % 100 + 1;
//	int guess_num = 0;
//	int count = 0;
//	while (1)
//	{
//		printf("请猜数字：");
//		scanf("%d", &guess_num);
//		count++;
//		if (guess_num > 100)
//		{
//			printf("输入1~100之间的数字！\n");
//			count--;
//		}
//		else if (guess_num < num)
//		{
//			printf("猜小了！\n");
//		}
//		else if (guess_num > num)
//		{
//			printf("猜大了！\n");
//		}
//		else 
//		{
//			printf("恭喜你猜对了！一共猜了%d次\n", count);
//			break;
//		}
//	}
//}
//int main()
//{
//	srand((unsigned int)time(NULL));
//	int input = 0;
//	do
//	{
//		Menu();
//		printf("请输入数字：");
//		scanf("%d", &input);
//		switch (input)
//		{
//			case 0:
//				printf("游戏退出\n");
//				break;
//			case 1:
//				printf("游戏开始，请猜1~100之间的数字！\n");
//				Play_Game();
//				break;
//			default:
//				printf("输入的数字有误！请重新输入！\n");
//				break;
//		}
//	} while (input);
//	return 0;
//}


//KiKi有一个矩阵，他想知道转置后的矩阵（将矩阵的行列互换得到的新矩阵称为转置矩阵），请编程帮他解答。
//#include <stdio.h>
//
//int main() {
//    int n = 0;
//    int m = 0;
//    scanf("%d %d", &n, &m);
//    int arr[n][m];
//    for (int i = 0; i < n; i++)
//    {
//        for (int j = 0; j < m; j++)
//        {
//            scanf("%d", &arr[i][j]);
//        }
//    }
//    for (int i = 0; i < m; i++)
//    {
//        for (int j = 0; j < n; j++)
//        {
//            printf("%d ", arr[j][i]);
//        }
//        printf("\n");
//    }
//    return 0;
//}


//输入描述：
//输入包含三行，
//
//第一行包含两个正整数n, m，用空格分隔。n表示第二行第一个升序序列中数字的个数，m表示第三行第二个升序序列中数字的个数。
//
//第二行包含n个整数，用空格分隔。
//
//第三行包含m个整数，用空格分隔。
//输出描述：
//输出为一行，输出长度为n + m的升序序列，即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。
//#include <stdio.h>
//
//void fun(int* arr1, int* arr2, int n, int m)
//{
//    int i = 0, j = 0;
//    while (i < n && j < m) {
//        if (arr1[i] <= arr2[j]) {
//            printf("%d ", arr1[i]);
//            i++;
//        }
//        else {
//            printf("%d ", arr2[j]);
//            j++;
//        }
//    }
//
//    //余下的值
//    while (i < n) {
//        printf("%d ", arr1[i]);
//        i++;
//    }
//    while (j < m) {
//        printf("%d ", arr2[j]);
//        j++;
//    }
//}
//
//int main() {
//    int n, m;
//    scanf("%d %d", &n, &m);
//    int arr1[n];
//    int arr2[m];
//    for (int i = 0; i < n; i++)
//    {
//        scanf("%d", &arr1[i]);
//    }
//    for (int j = 0; j < m; j++)
//    {
//        scanf("%d", &arr2[j]);
//    }
//    fun(arr1, arr2, n, m);
//    return 0;
//}


//写一个二分查找函数
//功能：在一个升序数组中查找指定的数值，找到了就返回下标，找不到就返回 - 1.

//int bin_search(int arr[], int left, int right, int key)
//{
//	while (left<=right)
//	{
//		//int mid = (left + right) / 2;
//		int mid = left + (right - left) / 2;
//		if (key < arr[mid])
//		{
//			right = mid - 1;
//		}
//		else if (key > arr[mid])
//		{
//			left = mid + 1;
//		}
//		else
//		{
//			return mid;
//		}
//	}
//	return -1;
//}
//
//int main()
//{
//	int arr[] = { 1,3,5,7,9,11,13 };
//	int left = 0;
//	int right = sizeof(arr) / sizeof(arr[0]) - 1;
//	int num = 0;
//	scanf("%d", &num);
//	int key = bin_search(arr, left, right, num);
//	printf("%d\n", key);
//	return 0;
//}


//实现一个函数，打印乘法口诀表，口诀表的行数和列数自己指定
//如：输入9，输出9 * 9口诀表，输出12，输出12 * 12的乘法口诀表。

//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	for (int i = 1; i <= num; i++)
//	{
//		for (int j = 1; j <= i; j++)
//		{
//			printf("%d×%d=%d ", j,i,i*j);
//		}
//		printf("\n");
//	}
//	return 0;
//}


//创建一个整形数组，完成对数组的操作
//	实现函数init() 初始化数组为全0
//	实现print()  打印数组的每个元素
//	实现reverse()  函数完成数组元素的逆置。
//	要求：自己设计以上函数的参数，返回值。

//void init(int arr[], int sz)
//{
//	for (int i = 0; i < sz; i++)
//	{
//		arr[i] = 0;
//	}
//}
//
//void print(int arr[], int sz)
//{
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//
//void reverse(int arr[], int sz)
//{
//	int left = 0;
//	int right = sz-1;
//	while (left<=right)
//	{
//		int tmp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = tmp;
//		left++;
//		right--;
//	}
//}
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	printf("数组逆序前:");
//	print(arr, sz);
//	printf("\n数组逆序后:");
//	reverse(arr, sz);
//	print(arr, sz);
//
//	printf("\n初始化数组前:");
//	print(arr, sz);
//	printf("\n初始化数组后:");
//	init(arr, sz);
//	print(arr, sz);
//
//	return 0;
//}